﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using BHXH.Core.IService;
using FX.Core;
using BHXH.Core.Domain;
using Infragistics.Win.UltraWinGrid;

namespace BHXH.Frm.FrmUserControl
{
    public partial class C15a_TS : UserControl
    {
        private readonly Ihs_C15aTS_msService _hs_c15atsmsSrv;
        /// <summary>
        /// Tạo list để lưu các ID đã xóa trên grid
        /// </summary>
        public IList<string> ID_C15a_TS = new List<string>();
        /// <summary>
        /// Tạo biến lưu số thứ tự
        /// </summary>
        int Stt = 1;
        private IList<string> _List_ID_Xoa;
        public IList<string> List_ID_Xoa
        {
            get { return _List_ID_Xoa; }
            set { _List_ID_Xoa = value; }
        }

        public C15a_TS()
        {
            InitializeComponent();
            _hs_c15atsmsSrv = IoC.Resolve<Ihs_C15aTS_msService>();

            LoadGridview_A01aTS();
        }
        /// <summary>
        /// Thực hiện load data lên ultragrid
        /// </summary>
        public void LoadGridview_A01aTS()
        {
            uG_C15aTS.DataSource = GetAll_C15aTS_Tab();
            uG_C15aTS.DisplayLayout.Override.ActiveCellAppearance.Reset();
            uG_C15aTS.DisplayLayout.Override.ActiveRowAppearance.Reset();
            this.uG_C15aTS.DisplayLayout.Bands[0].RowLayoutStyle = RowLayoutStyle.ColumnLayout;
            this.uG_C15aTS.DisplayLayout.Bands[0].Override.AllowRowLayoutLabelSizing = RowLayoutSizing.Both;
            this.uG_C15aTS.DisplayLayout.Bands[0].Columns[0].Hidden = true;
            this.uG_C15aTS.SyncWithCurrencyManager = false;
        }
        /// <summary>
        /// Tạo bảng chứa các dữ liệu lấy lên từ DB
        /// </summary>
        /// <returns></returns>
        public DataTable GetAll_C15aTS_Tab()
        {
            IList<hs_C15aTS_ms> a = _hs_c15atsmsSrv.GetAll_hs_c15atsms();
            DataTable table = new DataTable();

            table.Columns.Add("ID", typeof(int));
            table.Columns.Add("STT \n(#)", typeof(string));
            table.Columns.Add("Họ và tên \n(1)", typeof(string));
            table.Columns.Add("Ngày sinh \n(2)", typeof(string));
            table.Columns.Add("Địa chỉ \n(3)", typeof(string));
            table.Columns.Add("Mã số BHXH \n(4)", typeof(string));
            table.Columns.Add("Tên BHXH \n(5)", typeof(string));
            table.Columns.Add("Quyết Định Số \n(6)", typeof(string));
            table.Columns.Add("Quyết Định Ngày \n(7)", typeof(string));
            table.Columns.Add("BHTN chưa hưởng đến tháng \n(8)", typeof(string));
            table.Columns.Add("BHTN chưa hưởng đến năm \n(9)", typeof(string));
            table.Columns.Add("BHTN tổng tháng \n(10)", typeof(string));
            table.Columns.Add("BHTN tổng năm \n(11)", typeof(string));
            table.Columns.Add("Đã hưởng BHXH \n(12)", typeof(bool));
            table.Columns.Add("Diễn giải chi tiết \n(13)", typeof(string));
            if (a.Count>0)
            {
                foreach (var item in a)
                {
                    table.Rows.Add(item.ID, Stt, item.HoTen, item.NgaySinh, item.DiaChi, item.MaSoBHXH, item.TenBHXH, item.QuyetDinhSo
                        , item.QuyetDinhNgay, item.BHTNChuaHuongThang, item.BHTNChuaHuongNam, item.BHTNTongThang, item.BHTNTongNam
                        , item.DaHuongBHXH, null);
                    Stt += 1;
                }
            }
            else
            {
                table.Rows.Add(null, Stt, null, null, null, null, null, null
                        , null, null, null, null, null, false, null);
                Stt += 1;
            }
            
            return table;
        }

        private void uG_C15aTS_InitializeLayout(object sender, InitializeLayoutEventArgs e)
        {
            for (int i = 0; i < e.Layout.Bands[0].Columns.Count; i++)
            {
                e.Layout.Bands[0].Columns[i].CellAppearance.TextHAlign = Infragistics.Win.HAlign.Center;
            }
        }
        /// <summary>
        /// Phím tắt
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void uG_C15aTS_KeyDown(object sender, KeyEventArgs e)
        {
            switch (e.KeyCode)
            {
                case Keys.Insert:
                    UltraGridRow row = this.uG_C15aTS.DisplayLayout.Bands[0].AddNew();
                    row.Cells[1].Value = Stt;
                    row.Cells[13].Value = false;
                    Stt += 1;
                    break;
                case Keys.F11:
                    if (this.uG_C15aTS.Selected.Rows.Count > 0)
                    {
                        ID_C15a_TS.Add(this.uG_C15aTS.ActiveRow.Cells["ID"].Value.ToString());
                        this.uG_C15aTS.DeleteSelectedRows();
                        List_ID_Xoa = ID_C15a_TS;
                        Stt -= 1;
                    }
                    else
                    {
                        MessageBox.Show("Chọn dòng để xóa.");
                    }
                    break;
            }
        }
        /// <summary>
        /// Hàm xóa trên DB
        /// </summary>
        public void Xoa_C15aTS()
        {
            bool Xoa_hs_c15atsms = false;
            if (DialogResult.Yes == MessageBox.Show("Bạn có chắc chắn xóa không?", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question))
            {
                foreach (var item in ID_C15a_TS)
                {
                    if (_hs_c15atsmsSrv.Delete_hs_c15atsms(item) > 0)
                    {
                        Xoa_hs_c15atsms = true;
                        
                    }
                }
                if (Xoa_hs_c15atsms == true)
                {
                    MessageBox.Show("Xóa thông tin thành công...");
                }
            }
        }
        /// <summary>
        /// Hàm Lưu lại các thay đổi dữ liệu trên Grid(update và thêm mới) vào DB
        /// </summary>
        public void Ghi_C15aTS()
        {
            string ID = "";
            bool update_hs_c15atsms = false;
            bool add_hs_c15atsms = false;
            hs_C15aTS_ms hs = new hs_C15aTS_ms();
            UltraGridBand band = this.uG_C15aTS.DisplayLayout.Bands[0];
            foreach (UltraGridRow row in band.GetRowEnumerator(GridRowType.DataRow))
            {
                UltraGridColumn column = this.uG_C15aTS.DisplayLayout.Bands[0].Columns[0];
                ID = row.Cells[column].Value.ToString();
                hs.HoTen = row.Cells[this.uG_C15aTS.DisplayLayout.Bands[0].Columns[2]].Value.ToString();
                hs.NgaySinh = row.Cells[this.uG_C15aTS.DisplayLayout.Bands[0].Columns[3]].Value.ToString();
                hs.DiaChi = row.Cells[this.uG_C15aTS.DisplayLayout.Bands[0].Columns[4]].Value.ToString();
                hs.MaSoBHXH = row.Cells[this.uG_C15aTS.DisplayLayout.Bands[0].Columns[5]].Value.ToString();
                hs.TenBHXH = row.Cells[this.uG_C15aTS.DisplayLayout.Bands[0].Columns[6]].Value.ToString();
                hs.QuyetDinhSo = row.Cells[this.uG_C15aTS.DisplayLayout.Bands[0].Columns[7]].Value.ToString();
                hs.QuyetDinhNgay = row.Cells[this.uG_C15aTS.DisplayLayout.Bands[0].Columns[8]].Value.ToString();
                hs.BHTNChuaHuongThang = row.Cells[this.uG_C15aTS.DisplayLayout.Bands[0].Columns[9]].Value.ToString();
                hs.BHTNChuaHuongNam = row.Cells[this.uG_C15aTS.DisplayLayout.Bands[0].Columns[10]].Value.ToString();
                hs.BHTNTongThang = row.Cells[this.uG_C15aTS.DisplayLayout.Bands[0].Columns[11]].Value.ToString();
                hs.BHTNTongNam = row.Cells[this.uG_C15aTS.DisplayLayout.Bands[0].Columns[12]].Value.ToString();
                hs.DaHuongBHXH = row.Cells[this.uG_C15aTS.DisplayLayout.Bands[0].Columns[13]].Value.ToString();

                if (!ID.Equals(""))
                {
                    hs.ID = int.Parse(ID);
                    _hs_c15atsmsSrv.Update_hs_c15atsms(hs);
                    update_hs_c15atsms = true;
                }
                else
                {
                    if (_hs_c15atsmsSrv.Add_hs_c15atsms(hs) == true)
                    {
                        add_hs_c15atsms = true;
                    }
                }
            }

            if (update_hs_c15atsms == true || add_hs_c15atsms == true)
            {
                MessageBox.Show("Cập nhật thông tin thành công...");
            }
        }
    }
}
